// 数据库的定义 对应
import {
  Index,
  Entity,
  Column,
  PrimaryGeneratedColumn,
  Unique,
  BeforeInsert,
  BeforeUpdate,
} from "typeorm";
import { UserStatus } from "@common/enums/business-code.enum";
import { Exclude } from "class-transformer";

/**
 * PrimaryGeneratedColumn --> 主键自增列
 * Column --> 普通列
 * Unique --> 唯一列
 * Exclude --> 排除列 配合 class-transformer 使用 或者controller中 @UseInterceptors(ClassSerializerInterceptor)
 * **/

@Entity("sys_users")
// @Index(["username", "userId"])
export class UserEntity {
  @BeforeInsert()
  setCreatedAt() {
    this.createTime = new Date();
    this.updateTime = new Date();
  }

  @BeforeUpdate()
  setUpdatedAt() {
    this.updateTime = new Date();
  }

  @PrimaryGeneratedColumn() // 主键自增
  userId: number;

  @Column() //
  avatar: string; // 头像

  // @Unique(['username'])

  @Column({ unique: true })
  username: string; // 用户名

  @Column()
  @Exclude()
  password: string; // 密码

  @Column({ type: "int", default: 1 })
  status: UserStatus;

  @Column()
  realname: string; // 真实姓名

  @Column()
  userRole: string; // 用户角色

  @Column()
  createId: number; // 创建人id

  @Column()
  createName: string; // 创建人姓名

  @Column()
  createTime: Date; // 创建时间

  @Column()
  updateId: number; // 修改人id

  @Column()
  updateName: string; // 修改人姓名

  @Column()
  updateTime: Date; // 修改时间
}
